<?php
/**
 * Niushop商城系统 - 团队十年电商经验汇集巨献!
 * =========================================================
 * Copy right 2015-2025 山西牛酷信息科技有限公司, 保留所有权利。
 * ----------------------------------------------
 * 官方网址: http://www.niushop.com.cn
 * 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和使用。
 * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
 * =========================================================
 * @author : niuteam
 * @date : 2015.1.17
 * @version : v1.0.0.0
 */
namespace data\model;

use data\model\BaseModel as BaseModel;
use think\Db;

/**
 * 前台会员表
 * @author Administrator
 *
 */
class NsMemberModel extends BaseModel {
    protected $table = 'ns_member';
    protected $rule = [
        'uid'  =>  '',
    ];
    protected $msg = [
        'uid'  =>  '',
    ];

    /**
     * 团队奖人员信息过滤，20220319最新版
     */
    public static function find_team_award_users($user_id, $debug = false)
    {
        $vip_set = db('ns_member_level')->where('grade_rate>1')->column('level,grade_rate');
        $tree = db('ns_member')->where(['uid' => $user_id])->value('tree');
        if ($debug) {
            echo '查找' . $user_id . '的上级链：【' . $tree . '】<br/>';
        }
        $tree = ltrim(rtrim($tree, ','), ',');
        $tree_arr = array_reverse(explode(',', $tree));
        if ($tree_arr) {
            $ratio_arr = [];
            foreach ($tree_arr as $k => $parent_id) {
                $parent_lv = db('ns_member')->where(['uid' => $parent_id])->value('member_level');
                $ratio_arr[$k] = [
                    'pid' => $parent_id,
                    'lv' => $parent_lv,
                    'rate' => $vip_set[$parent_lv]
                ];
            }
//            if ($debug) {
//                dump($ratio_arr);
//            }

            $result = [];
            $max = $ratio_arr[0]['rate'];//没有超越
            $max_key = [0];
            $same_lv_flag = true;
            if (!empty($ratio_arr)) {
                foreach ($ratio_arr as $key => $val) {
                    $same_lv_rate = 0;
                    $rate = $val['rate'];
                    if ($key > 0) {
                        if ($val['rate'] > $max) {
                            $max = $val['rate'];
                            $rate = $val['rate'] - $result[$max_key[count($max_key) - 1]]['lv_rate'];//级差
                            $max_key[] = $key;
                        } else {
                            if ($rate == $ratio_arr[$key - 1]['rate'] && $same_lv_flag) {
                                $same_lv_rate = Db::name('ns_member_level')->where(['level' => $val['lv']])->value('same_lv_rate');
                                $same_lv_flag = false;
                            }

                            $rate = 0;
                        }
                    }

                    $result[$key]['user_id'] = $val['pid'];
                    $result[$key]['lv'] = $val['lv'];
                    $result[$key]['lv_rate'] = $val['rate'];
                    $result[$key]['award_rate'] = $rate;
                    $result[$key]['same_lv_rate'] = $same_lv_rate;
                }
            }
            if ($debug) {
                foreach ($result as $item) {
                    echo '收益人：' . $item['user_id'] . '，收益人等级：' . $item['lv'] . ', 收益人原百分比：' . $item['lv_rate'] . '%, 级差百分比：' . $item['award_rate'] . '%，平级百分比：上个级差百分比的' . $item['same_lv_rate'] . '%<br/>';
                }
            }
            return $result;
        }
    }
}
